#ifndef SEARCHCONTROLLERTHREADCALLBACK_H
#define SEARCHCONTROLLERTHREADCALLBACK_H

#include "SearchTask.h"


class SearchControllerThread;


/** Callback interface for notifications from SerachControllerThreads

 */
class ISearchControllerThreadCallback
{
public  :
    virtual ~ISearchControllerThreadCallback() { }

    /** Progress notiffication callback */
    virtual void onProgress(SearchTaskPtr task, SearchControllerThread *thread, float progress) = 0;

    /** Giud found task is completed */
    virtual void guidFound(SearchTaskPtr task, SearchControllerThread *thread,
                           const std::string & guid) = 0;

    /** Object is skanned. Object is not infected */
    virtual void notFound(SearchTaskPtr task, SearchControllerThread *thread) = 0;

    /** Some error occurred. E.g. file not found or file access error */
    virtual void onError(SearchTaskPtr task, SearchControllerThread *thread,
                         const std::string & errMsg) = 0;

    /** Scan was interrupted by client */
    virtual void onInterrupted(SearchTaskPtr task, SearchControllerThread *thread) = 0;


};

#endif // SEARCHCONTROLLERTHREADCALLBACK_H
